MyBatis 是一个优秀的持久层框架，它支持自定义 SQL、存储过程以及高级映射。以下是一个简单的 MyBatis Java 代码示例，展示了如何使用 MyBatis 进行数据库操作。

---

### **1. 环境准备**
确保你已经添加了 MyBatis 和数据库驱动的依赖。例如，使用 Maven 时，`pom.xml` 中需要添加以下依赖：

```xml
<dependencies>
    <!-- MyBatis 核心依赖 -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.10</version>
    </dependency>
    <!-- MySQL 驱动 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.33</version>
    </dependency>
</dependencies>
```

---

### **2. 数据库表**
假设有一个 `users` 表，结构如下：

```sql
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    email VARCHAR(50)
);
```

---

### **3. 实体类**
创建一个与 `users` 表对应的 Java 实体类：

```java
public class User {
    private int id;
    private String name;
    private String email;

    // Getters and Setters
    public int getId() { return id; }
    public void setId(int id) { this.id = id; }
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public String getEmail() { return email; }
    public void setEmail(String email) { this.email = email; }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", email='" + email + '\'' +
                '}';
    }
}
```

---

### **4. Mapper 接口**
定义一个 Mapper 接口，用于操作 `users` 表：

```java
import java.util.List;

public interface UserMapper {
    // 查询所有用户
    List<User> findAll();

    // 根据 ID 查询用户
    User findById(int id);

    // 插入用户
    void insert(User user);

    // 更新用户
    void update(User user);

    // 删除用户
    void delete(int id);
}
```

---

### **5. Mapper XML 文件**
在 `resources` 目录下创建 `UserMapper.xml`，定义 SQL 语句：

```xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="UserMapper">
    <select id="findAll" resultType="User">
        SELECT * FROM users
    </select>

    <select id="findById" resultType="User" parameterType="int">
        SELECT * FROM users WHERE id = #{id}
    </select>

    <insert id="insert" parameterType="User">
        INSERT INTO users (name, email) VALUES (#{name}, #{email})
    </insert>

    <update id="update" parameterType="User">
        UPDATE users SET name = #{name}, email = #{email} WHERE id = #{id}
    </update>

    <delete id="delete" parameterType="int">
        DELETE FROM users WHERE id = #{id}
    </delete>
</mapper>
```

---

### **6. MyBatis 配置文件**
在 `resources` 目录下创建 `mybatis-config.xml`，配置数据源和 Mapper 文件：

```xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/testdb"/>
                <property name="username" value="root"/>
                <property name="password" value="password"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="UserMapper.xml"/>
    </mappers>
</configuration>
```

---

### **7. 测试代码**
编写一个测试类，使用 MyBatis 进行数据库操作：

```java
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.InputStream;
import java.util.List;

public class MyBatisExample {
    public static void main(String[] args) throws Exception {
        // 加载 MyBatis 配置文件
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        // 获取 SqlSession
        try (SqlSession session = sqlSessionFactory.openSession()) {
            // 获取 Mapper 接口
            UserMapper mapper = session.getMapper(UserMapper.class);

            // 插入用户
            User user = new User();
            user.setName("John Doe");
            user.setEmail("john@example.com");
            mapper.insert(user);
            session.commit(); // 提交事务

            // 查询所有用户
            List<User> users = mapper.findAll();
            users.forEach(System.out::println);

            // 根据 ID 查询用户
            User foundUser = mapper.findById(1);
            System.out.println("Found User: " + foundUser);

            // 更新用户
            foundUser.setName("Jane Doe");
            mapper.update(foundUser);
            session.commit();

            // 删除用户
            mapper.delete(1);
            session.commit();
        }
    }
}
```

---

### **8. 运行结果**
运行测试代码后，你将看到以下输出：

```
User{id=1, name='John Doe', email='john@example.com'}
Found User: User{id=1, name='John Doe', email='john@example.com'}
```

---

### **总结**
以上代码展示了如何使用 MyBatis 进行基本的 CRUD 操作。通过配置文件和 Mapper 接口，MyBatis 可以轻松地将 Java 对象与数据库表进行映射，并执行 SQL 操作。